<!--
 * @Descripttion:
 * @Author: voanit
 * @Date: 2021-11-05 15:43:30
 * @LastEditors: voanit
 * @LastEditTime: 2021-11-05 20:33:23
-->
<template>
  <div>
    <!-- 面板屑导航 -->
    <bread first="个人中心" second="更换头像"></bread>
    <div>
      <img style="width: 100px; height: 100px" :src="imgSrc" alt="" />
    </div>
    <!-- 按钮 -->
    <div class="btns">
      <!-- 文件选择框 -->
      <input
        type="file"
        accept="image/*"
        style="display: none"
        ref="fileRef"
        @change="changeHandle"
      />
      <el-button type="primary" icon="el-icon-plus" @click="chooseImg"
        >选择图片</el-button
      >
      <el-button
        type="success"
        icon="el-icon-upload"
        :disabled="disabled"
        @click="upload"
        >上传头像
      </el-button>
    </div>
  </div>
</template>

<script>
import { avatarApi } from '@/api/user'
import imgDefault from '@/assets/images/avater.jpg'
export default {
  name: '',
  data () {
    return {
      imgSrc: '',
      disabled: true
    }
  },
  created () {
    setTimeout(() => {
      this.imgSrc = this.$store.state.user.userinfo.user_pic || imgDefault
    }, 1000)
  },
  computed: {},
  methods: {
    chooseImg () {
      /*
      1、显示图片
      2、取消禁用
       */
      this.disabled = false
      this.$refs.fileRef.click()
    },
    /* 只要选择了图片就立刻触发 */
    changeHandle (e) {
      console.log(e, 6677)
      //  获取图片资源
      var file = e.target.files[0]
      // 1-设置上传图片大小  GB   MB   KB   B
      if (file.size / 1024 / 1024 > 1.5) {
        this.$message.error('选择的图片尺寸太大了,请选择一张小的图片')
        return //  超过图片尺寸就直接终止
      }

      // 2- 读取文件转换成base64格式并显示
      if (file) {
        //  显示图片===要求是base64
        var fr = new FileReader() //   研究对象就是研究三要素：属性+方法+回调函数
        //  使用readAsDataURL方法读取文件   读取file文件
        fr.readAsDataURL(file)
        //  监听什么时候读取完毕
        // fr.addEventListener('load')
        fr.onload = () => {
          //  读取完毕后获取读取的结果
          console.log(1111222, this)
          this.imgSrc = fr.result // 将图片上展示出来
        }
      }
    },

    /* 上传图像 */
    async upload () {
      /*
      1、发送请求
      2、成功后之后提示上传成功
      3、重新获取用户信息
      4、禁用上传图片按钮
       */
      console.log(this.imgSrc)
      const res = await avatarApi(this.imgSrc)
      console.log(res)
      this.$message.success('更新图片成功')
      this.$store.dispatch('user/Agetinfo')
      this.disabled = true
    }
  }
}
</script>
<style lang='less'  scoped>
</style>
